admin update-kernel: Ensure initramfs has correct owner/mode
authorColin Walters <walters@verbum.org>
Sun, 6 Jan 2013 11:43:49 +0000 (06:43 -0500)
committerColin Walters <walters@verbum.org>
Sun, 6 Jan 2013 11:43:49 +0000 (06:43 -0500)
It was 0600, and owned by the creating process (in the fuse case,
non-root!).  We want it 0644/root/root.

src/libgsystem
src/ostree/ot-admin-builtin-update-kernel.c

index b4e8a2ae8684fab55efe74a7fd4b872c934475fd..fe898ee93bdc8a625c460876c8b49428c8977219 160000 (submodule)
@@ -1 +1 @@
-Subproject commit b4e8a2ae8684fab55efe74a7fd4b872c934475fd
+Subproject commit fe898ee93bdc8a625c460876c8b49428c8977219
index 8e57709010c292639666867370f82b763a8498b1..199110b31f1cd90cdec7479844f328b63df7af0f 100644 (file)
@@ -256,8 +256,24 @@ update_initramfs (OtAdminUpdateKernel  *self,
           goto out;
         }
 
+      if (!gs_file_chmod (initramfs_tmp_file, 0644, cancellable, error))
+        {
+          g_prefix_error (error, "Failed to chmod initramfs: ");
+          goto out;
+        }
+
       if (!gs_file_linkcopy_sync_data (initramfs_tmp_file, initramfs_file, cancellable, error))
         goto out;
+      
+      /* In the fuse case, we need to chown after copying */
+      if (getuid () != 0)
+        {
+          if (!gs_file_chown (initramfs_file, 0, 0, cancellable, error))
+            {
+              g_prefix_error (error, "Failed to chown initramfs: ");
+              goto out;
+            }
+        }
           
       g_print ("Created: %s\n", gs_file_get_path_cached (initramfs_file));